define(function(require,exports,module) {
    var myPub = require('./public');
    var oInputPsd = $('.js_inputPsd');                      // 所有的输入框
    var oClearBtn = $('.js_clearBtn');                      // 所有的清除按钮
    var oInputArea = $('.js_inputArea');                    // 每个输入框的父级
    var oShowPsd = $('.js_showPsd');                        // 显示密码
    var oOldPsdInput = $('.js_oldPsdInput');                // 原始密码
    var oNewPsdInput = $('.js_newPsdInput');                // 新密码
    var oSurePsdInput = $('.js_surePsdInput');              // 确认密码
    var oPsdFormBtn = $('.js_psdFormBtn');                  // 提交按钮

    var oIdentifyingCode = $('.js_identifyingCode');        // 验证码输入框
    var oGetCode = $('.js_getCode');                        // 获取验证码
    var oReSend = $('.js_reSend');                          // 重新获取验证码
    var oChangeBtn = $('.js_changeBtn');                    // 确认修改按钮
    var oChangePsdshadow = $('.js_changePsdshadow');         //密码修改弹窗




    var nOldPsd = false;            // 原始密码是否合规
    var bNewPsd = false;            // 新密码是否合规
    var bSurePsd = false;           // 确认密码是否合规
    var bFormBtn = false;           // 提交按钮变亮
    var bFormBtnTap = true;        // 提交按钮防止多次点击
    var formBtnTap_timer = null;    // 提交按钮定时器
    var sStyle = 'color:#ff5353;font-size:1.15rem;background:#ffffff;';
    var getCodeTap = true;          // 获取验证码防止多次点击
    var getCode_timer = null;       // 获取验证码定时器
    var bGetoffTap = true;          // 确认修改按钮防止多次点击
    var getTapOffTime = null;       // 确认修改按钮定时器
    var setJumpUrlTimer = null;     // 3秒后自动跳转



    module.exports = {
        init:function () {
        }
    };

    // 输入框控制清除按钮
    oInputPsd.on('input propertychange',function () {
        var _oClearBtn = $(this).siblings('.js_clearBtn');
        $(this).val() == ''?_oClearBtn.hide():_oClearBtn.show();
    });
    // 清除按钮
    oClearBtn.hammer().on('tap',function () {
        $(this).siblings('.js_inputPsd').val('');
        $(this).hide()
    });
    // 显示密码
    oShowPsd.hammer().on('tap',function () {
        if($(this).hasClass('on')) {
            $(this).removeClass('on icon-eye_look').addClass('icon-eye_close').siblings('.js_inputPsd').attr('type', 'password')
        } else {
            $(this).addClass('on icon-eye_look').removeClass('icon-eye_close').siblings('.js_inputPsd').attr('type', 'text')
        }
    });
    // 原始密码
    oOldPsdInput.on('input propertychange',function () {
        var oldVal = $(this).val();
        proving(oldVal,function () {
            nOldPsd = true;
        },function () {
            nOldPsd = false;
        });
        activeBtn();
    });
    // 新密码
    oNewPsdInput.on('input propertychange',function () {
        var newVal = $(this).val();
        proving(newVal,function () {
            bNewPsd = true;
        },function () {
            bNewPsd = false;
        });
        activeBtn();
    });
    // 确认密码
    oSurePsdInput.on('input propertychange',function () {
        var sureVal = $(this).val();
        proving(sureVal,function () {
            bSurePsd = true;
        },function () {
            bSurePsd = false;
        });
        activeBtn();
    });

    // 提交按钮
    oPsdFormBtn.hammer().on('tap',function () {
        if(bFormBtnTap){
            bFormBtnTap = false;
            if($(this).hasClass('btn_Bgred')){
                if(oNewPsdInput.val() == oOldPsdInput.val()){
                    // 新密码与原始密码一样
                    myPub.TipLayer('新密码与原始密码不能一致',sStyle);
                }else{
                    $.ajax({
                        url: '/ddjLoginAuth/modifyPassword',
                        data: {
                            "oldPassword":Encrypt($('.js_oldPsdInput').val()),
                            "password":Encrypt($('.js_newPsdInput').val()),
                            "repeatPassword":Encrypt($('.js_surePsdInput').val())
                        },
                        type: 'POST',
                        dataType: 'json',
                        success: function(data) {
                            if(data.code == 'F_000') {
                                oChangePsdshadow.show();
                                hrefPsd();
                                clearTimeout(setJumpUrlTimer);
                                setJumpUrlTimer = setTimeout(function () {
                                    window.location.href = "/myInfo/toMyInfo";
                                },3000)
                            } else {
                                myPub.TipLayer(data.msg);
                            }
                        },
                        error:function(x){
                            if(403==x.status){
                                window.location.href="/loginExpired";
                            }
                            console.log(x.status);
                        }
                    });
                }
            }else{
                if(oOldPsdInput.val() == ''){
                    // 原始密码为空
                    myPub.TipLayer('请输入原始密码',sStyle);
                }else if(!nOldPsd){
                    // 原始密码格式不对
                    myPub.TipLayer('请输入正确的原始密码',sStyle);
                }else if(oNewPsdInput.val() == ''){
                    // 新密码为空
                    myPub.TipLayer('请输入新密码',sStyle);
                }else if(!bNewPsd){
                    // 新密码格式不对
                    myPub.TipLayer('请输入6-20位大小写字母和数字的新密码',sStyle);
                }else if(oNewPsdInput.val() == oOldPsdInput.val()){
                    // 新密码与原始密码不能一样
                    myPub.TipLayer('新密码与原始密码不能一致',sStyle);
                }else if(oSurePsdInput.val() == ''){
                    // 确认密码为空
                    myPub.TipLayer('请输入确认密码',sStyle);
                }else if(!bSurePsd){
                    // 确认密码格式不对
                    myPub.TipLayer('请输入6-20位大小写字母和数字的确认密码',sStyle);
                }else if(oNewPsdInput.val() != oSurePsdInput.val()){
                    // 新密码与确认密码不一样
                    myPub.TipLayer('您输入的新密码与确认密码不一致',sStyle);
                }
            }
        }
        clearTimeout(formBtnTap_timer);
        formBtnTap_timer = setTimeout(function () {
            bFormBtnTap = true;
        },250)
    });

    // 修改成功后跳转
    function hrefPsd() {
        oChangePsdshadow.hammer().on('tap',function () {
            window.location.href = "/myInfo/toMyInfo";
        })
    }

    // 验证码注入框
    oIdentifyingCode.on('input propertychange',function () {
        activeBtn()
    });
    // 获取验证码
    oGetCode.hammer().on('tap',function () {
        if(getCodeTap){
            getCodeTap = false;
            sendCode();
        }
        clearTimeout(getCode_timer);
        getCode_timer = setTimeout(function () {
            getCodeTap = true;
        },250)
    });
    // 确认修改按钮
    oChangeBtn.hammer().on('tap',function () {
        if(bGetoffTap){
            bGetoffTap = false;
            // 变亮状态
            if($(this).hasClass('btn_Bgred')){
                checkCode();
            }else{
                if(oIdentifyingCode.val() == ''){
                    // 验证码为空
                    myPub.TipLayer('请输入验证码',sStyle);
                }else if(oNewPsdInput.val() == ''){
                    // 新密码为空
                    myPub.TipLayer('请输入新密码',sStyle);
                }else if(!bNewPsd){
                    // 新密码格式不对
                    myPub.TipLayer('请输入6-20位大小写字母和数字的新密码',sStyle);
                }else if(oSurePsdInput.val() == ''){
                    // 确认密码为空
                    myPub.TipLayer('请输入确认密码',sStyle);
                }else if(!bSurePsd){
                    // 确认密码格式不对
                    myPub.TipLayer('请输入6-20位大小写字母和数字的确认密码',sStyle);
                }else if(oNewPsdInput.val() != oSurePsdInput.val()){
                    // 新密码与确认密码不一样
                    myPub.TipLayer('您输入的新密码与确认密码不一致',sStyle);
                }
            }
        }

        clearTimeout(getTapOffTime);
        getTapOffTime = setTimeout(function () {
            bGetoffTap = true;
        }, 500);
    });
    // 标签上 替换掉中文onkeyup="value=value.replace(/[\u4E00-\u9FA5]/g,'')"
    // 设置6-20位密码必须包含数字字母大小写  或者 @"^(?=.*[0-9].*)(?=.*[A-Z].*)(?=.*[a-z].*).{6,20}$"
    function proving(val,fn1,fn2) {
        var reg = /^(?=.*[A-Za-z])(?=.*[0-9])[A-Za-z0-9]{6,20}$/;
        if (reg.test(val)) {
            if (fn1) {fn1()}
        } else{
            if (fn2) {fn2()}
        }
    }
    // 按钮变亮
    function activeBtn() {
        // 提交按钮变亮
        if(nOldPsd && bNewPsd && bSurePsd && oSurePsdInput.val() == oNewPsdInput.val()){
            bFormBtn = true;
            oPsdFormBtn.removeClass('btn_Bggay');
            oPsdFormBtn.addClass('btn_Bgred');
        }else{
            bFormBtn = false;
            oPsdFormBtn.removeClass('btn_Bgred');
            oPsdFormBtn.addClass('btn_Bggay');
        }

        // 确认修改按钮变亮
        if(oIdentifyingCode.val() != '' && bNewPsd && bSurePsd && oSurePsdInput.val() == oNewPsdInput.val()){
            oChangeBtn.removeClass('btn_Bggay');
            oChangeBtn.addClass('btn_Bgred');
        }else{
            oChangeBtn.removeClass('btn_Bgred');
            oChangeBtn.addClass('btn_Bggay');
        }
    }
    // 倒计时
    function setCode() {
        oGetCode.hide();
        oReSend.show();
        myPub.CutTime(60, function() {
            oReSend.hide();
            oGetCode.show().text('重新发送');
        }, function(time) {
            oReSend.text(time+'秒后重发');
        });
    }
    // 获取验证码的交互
    function sendCode() {
        // 获取验证码的交互


        setCode();
    }
    // 确认修改提交的交互
    function checkCode() {
        // 交互
    }

    function Encrypt(word){
        var strInfo = "0102030405060708";
        var key = CryptoJS.enc.Utf8.parse(strInfo);
        var iv  = CryptoJS.enc.Utf8.parse(strInfo);
        var srcs = CryptoJS.enc.Utf8.parse(word);
        var encrypted = CryptoJS.AES.encrypt(srcs, key, { iv: iv,mode:CryptoJS.mode.CBC});
        return encrypted.toString();
    }

});